package br.com.unirio.autocar.dados;

import java.util.List;

import javax.persistence.Query;

import br.com.unirio.autocar.modelo.Pessoa;
import br.com.unirio.autocar.modelo.Proprietario;

public class RepositorioDeProprietario
{

    RepositorioGenerico<Proprietario> repositorioDeProprietarios;

    public RepositorioDeProprietario()
    {
	super();
	repositorioDeProprietarios = new RepositorioGenerico<Proprietario>();
    }

    public void salvarProprietario(Proprietario proprietario)
    {
	repositorioDeProprietarios.salvar(proprietario);
    }

    public Proprietario obterProprietarioAPartirDeId(Long idProprietario)
    {
	Proprietario proprietario = repositorioDeProprietarios.obterPorId(Proprietario.class, idProprietario);
	return proprietario;
    }

    public void removerProprietario(Proprietario proprietario)
    {
	repositorioDeProprietarios.excluir(proprietario);
    }

    public void alterarProprietario(Proprietario Proprietario)
    {
	repositorioDeProprietarios.alterar(Proprietario);
    }

    public List<Proprietario> obterTodos()
    {
	return this.repositorioDeProprietarios.obterTodos(Proprietario.class);
    }

    public Proprietario obterProprietarioAPartirDeIdPessoa(Pessoa pessoa)
    {
	Query query =
		this.repositorioDeProprietarios.getGerenciadorDeEntidade().createQuery(
			"FROM Proprietario p WHERE p.pessoa = :Pessoa");
	query.setParameter("Pessoa", pessoa);
	return (Proprietario) query.getSingleResult();
    }

    public Proprietario obterProprietarioAutoCar()
    {
	Query query =
		this.repositorioDeProprietarios.getGerenciadorDeEntidade().createQuery(
			"FROM Proprietario  WHERE codigoIdentificador = :codigoAutoCar");
	query.setParameter("codigoAutoCar", "33.351.139");
	return (Proprietario) query.getSingleResult();
    }

}
